package br.com.o2solutions.util.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtil { 
	
	private static final String FORMATO_DATA_YYYYMMDD = "yyyyMMdd";

	public static final String FORMATO_DATA_DDMMYYYY = "dd/MM/yyyy";

	/**
	 * Converte um Date em uma String no formato yyyyMMdd
	 * 
	 * @param data
	 * @return String : yyyyMMdd
	 */
	public static String convertDateToString(Date data){
		return convertDateToString(data, FORMATO_DATA_YYYYMMDD);
	}
	
	
	/**
	 * Converte uma data uma String com um determinado formato
	 * @param data
	 * @param format
	 * @return String
	 */
	public static String convertDateToString(Date data, String format){
		SimpleDateFormat sdf = new SimpleDateFormat(format);	
		return sdf.format(data);	
	}
	
	/**
	 * Formata uma String no Formato dd/MM/yyyy
	 * @param data Stringa data
	 * @return String
	 */
	public static String formatStringDate(String data){
		return formatStringDate(data, FORMATO_DATA_DDMMYYYY, FORMATO_DATA_YYYYMMDD);
	}
	
	/**
	 * Formata uma String verificando se o formato esta correto.
	 * @param data String data a ser formatada
	 * @param formatData
	 * @param formatDataRetorno
	 * @return
	 */
	public static String formatStringDate(String data, String formatData, String formatDataRetorno){
		SimpleDateFormat sdf = new SimpleDateFormat(formatData);
		Date date = null;
		try {
			date = sdf.parse(data);
			sdf.applyPattern(formatDataRetorno);
		} catch (ParseException e) {
			throw new IllegalArgumentException(e);
		}		
		return sdf.format(date);
	}
}
